/*
 * @Author: moonwater 13812995013@163.com
 * @Date: 2025-03-14 14:33:52
 * @LastEditors: moonwater 13812995013@163.com
 * @LastEditTime: 2025-03-17 07:52:43
 * @FilePath: \盐师22Git仓库\HomeWork\day15\Test08.java
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;

public class Test08 {
    // 软件最大的试用次数 10
    private final static int MAX_COUNT = 10;

    // 检查软件的使用次数
    private static void checkCount() {
        // 从配置文件中读取软件的使用次数
        int count = 0;
        String filePath = "setting.txt";
        // 如果软件第一次启动 可能不存在配置文件 创建配置文件
        Path FilePath = Paths.get(filePath);
        
        if (Files.notExists(FilePath)) {
            // 如果配置文件不存在，则创建配置文件
            try {
                Files.createFile(FilePath);
                System.out.println("配置文件已创建: " + filePath);
                
                // 可选：向新创建的配置文件中写入一些初始数据
                String initialContent = "这是初始配置内容";
                Files.write(FilePath, initialContent.getBytes());
                System.out.println("已写入初始配置内容。");
                
            } catch (IOException e) {
                System.err.println("创建配置文件时出错: " + e.getMessage());
            }
        } else {
            // 如果配置文件存在，则读取配置文件
            try (BufferedReader reader = new BufferedReader(new FileReader(FilePath.toFile()))) {
                System.out.println("读取配置文件内容:");
                String line;
                while ((line = reader.readLine()) != null) {
                    System.out.println(line);
                }
            } catch (IOException e) {
                System.err.println("读取配置文件时出错: " + e.getMessage());
            }
        }
        showCount(count);
        if (count >= MAX_COUNT) {
            // 如果大于10次 那就退出软件
            System.out.println("您已经试用该软件 " + MAX_COUNT + " 次。");
            System.out.println("请购买正版软件以继续使用。");
            exit();
        } else {
            // 如果小于10次 那就记录
            // 记录软件使用次数
            count++;
            try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(filePath), StandardCharsets.UTF_8, StandardOpenOption.TRUNCATE_EXISTING)) {
                writer.write(String.valueOf(count));
            } catch (IOException e) {
                e.printStackTrace();
                // 保存失败，程序退出（这里可以根据实际需求进行错误处理）
                System.exit(1);
            }
            System.out.println("欢迎使用软件！您还有 " + (MAX_COUNT - count) + " 次试用机会。");
            writeCount(filePath, count + 1);
        }
    }

    // 记录软件的使用次数
    private static void writeCount(String filePath, int count) {
        // filePath 是记录次数软件的位置
        // count 是软件使用的次数
    }

    // 显示剩余可用次数
    private static void showCount(int count) {
        System.out.println("您已经试用了" + count + "次，剩余" + (MAX_COUNT - count) + "次使用机会。");
    }

    // 退出软件的方法
    private static void exit() {
        System.exit(0);
    }

    // main
    public static void main(String[] args) {
        // 检查软件的使用次数
        checkCount();
    }
}